% Ejercicio "Declaraciones en JAVA"
\subsection*{\fbox{\theejercicio} - Declaraciones en JAVA}

Sea la gram\'atica que define la secci\'on de declaraci\'on de variables en JAVA (simplificada):

\begin{center}
\begin{tabular}{|lcl|} \hline
                             &               &                                           \\
{\em Lista-de-Declaraciones} & $\rightarrow$ & {\em Declaraci\'on}                       \\
                             & $|$           & {\em Lista-de-Delaraciones Declaraci\'on} \\
{\em Declaraci\'on}          & $\rightarrow$ & {\em Tipo Lista-de-Variables} {\bf ;}     \\
{\em Lista-de-Variables}     & $\rightarrow$ & {\bf IDENT}                               \\
                             & $|$           & {\bf IDENT,} {\em Lista-de-Variables}     \\
{\em Tipo}                   & $\rightarrow$ & {\bf IDENT}                               \\
                             & $|$           & {\bf INTEGER}                             \\
                             & $|$           & {\bf DOUBLE}                              \\
                             &               &                                           \\ \hline
\end{tabular}
\end{center}

Que permite declarar variables como por ejemplo:

\begin{verbatim}
int a,b,c;
double x,y;
Object r1, r2;
\end{verbatim}

Definir una gram\'atica L-atribuida para buscar en la tabla de s\'{\i}mbolos si estas variables han sido declaradas anteriormente, e insertarlas si no lo est\'an.

\medskip

NOTA: Para la resoluci\'on de este apartado puede suponerse que se han declarado las funciones:

\begin{verbatim}
/* Busca si el identificador esta incluido en la tabla.
   Devuelve 0 si no lo esta y 1 si esta */
int buscar(char* nombre)

/* Mete un nombre de variable en la tabla de simbolos con
   el tipo dado */
void insertar(char* nombre, char* tipo)

/* Devuelve el tipo correspondiente a una variable o NULL
   si la variable no esta en la tabla */
char* tipo(char* nombre)
\end{verbatim}

% Solución del ejercicio
\subsubsection*{SOLUCI\'ON}
